package com.wlc.collection;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

/**
 * @author 王立朝 wanglichao@champion-credit.com
 * @description Collections 工具类 是容器的工具类
 * @date 2021-07-12 17:12
 */
public class CollectionsUtil {
    public static List<Integer> getList() {
        List<Integer> numbers = new ArrayList<>();
        numbers.add(12);
        numbers.add(1);
        numbers.add(23);
        numbers.add(56);
        numbers.add(34);
        numbers.add(76);
        numbers.add(21);
        System.out.print("数据源为：");
        for (Integer number : numbers) {
            System.out.print(" " + number + " ");
        }
        System.out.println("");
        return numbers;
    }

    private void loopList(List<?> list) {
        for (Object i : list) {
            System.out.print(i + " ");
        }
    }

    /**
     * Collections 工具类的常用方法
     */
    public void method01() {
        List<Integer> list = getList();
        // 1、反转
        Collections.reverse(list);
        System.out.println("反转后的数据为：");
        for (Integer integer : list) {
            System.out.print(integer + " ");
        }
        System.out.println("======");
        // 2、计算list集合中的最大值合最小值
        Integer max = Collections.max(list);
        Integer min = Collections.min(list);
        System.out.println("最大的值为：" + max + "最小值为： " + min);
        // 3、搞混原来的list 的顺序 Collections.shuffle(List);
        Collections.shuffle(list);
        System.out.println("最新的list 顺序为： ");
        loopList(list);
        System.out.println("====");
        // 4、排序
        Collections.sort(list);
        System.out.println("拍好序后的顺序为： ");
        loopList(list);
        System.out.println("==========");
        // 5、交换2个数据位置（把第一个数合第3个数的顺序替换）
        Collections.swap(list, 0, 2);
        System.out.println("交换顺序后的数据");
        loopList(list);
        System.out.println("==========");
        // 6、把list中的数据向右变滚动指定单位的长度
        Collections.rotate(list, 2);
        System.out.println("数据向右边滚动2个单位长度");
        loopList(list);
        // 7、把非线程安全的list 转换为线程安全的集合 Collections.synchronizedXXX 方法
        List<Integer> integers = Collections.synchronizedList(list);

    }

    public static void main(String[] args) {
        new CollectionsUtil().method01();
    }

}
